package com.ruoyi.web.controller.kujiale;

import com.google.common.collect.Lists;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.JYXResult;
import com.ruoyi.system.domain.DesignBase;
import com.ruoyi.system.dto.design.DesignQueryDTO;
import com.ruoyi.system.dto.design.ModifyDesignDto;
import com.ruoyi.system.enums.DesignStatusEnum;
import com.ruoyi.system.service.DesignBaseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 基础设计表Controller
 */
@RestController
@RequestMapping("/system/designBase")
@Api(tags = "基础设计管理")
public class DesignBaseController extends BaseController {


    @Autowired
    private DesignBaseService designBaseService;

    /**
     * 查询基础设计列表
     */
    @GetMapping("/list")
    @ApiOperation("查询基础设计列表")
    public JYXResult list(DesignQueryDTO query) {
        return JYXResult.success(designBaseService.getPageListNew(query));
    }

    /**
     * 查询基础设计列表仅h5
     */
    @GetMapping("/h5list")
    @ApiOperation("查询基础设计列表")
    public JYXResult h5list(DesignQueryDTO query) {
        return JYXResult.success(designBaseService.getPageListNew(query));
    }

    /**
     * 获取基础设计详细信息
     */
    @GetMapping(value = "/{id}")
    @ApiOperation("获取基础设计详细信息")
    public JYXResult getInfo(@PathVariable("id") Long id) {
        return JYXResult.success(designBaseService.getById(id));
    }

    /**
     * 新增基础设计
     */
    @PostMapping
    @ApiOperation("新增基础设计")
    public JYXResult add(@RequestBody DesignBase designBase) {
        return designBaseService.saveWithDesignNo(designBase) ? JYXResult.success() : JYXResult.error();
    }

    /**
     * 修改基础设计
     */
    @PutMapping
    @ApiOperation("修改基础设计")
    public JYXResult edit(@RequestBody ModifyDesignDto designBase) {
        return designBaseService.updateById(designBase) ?  JYXResult.success() : JYXResult.error();
    }

    /**
     * 删除基础设计
     */
    @DeleteMapping("/{ids}")
    @ApiOperation("删除基础设计")
    public JYXResult remove(@PathVariable Long[] ids) {
        return designBaseService.removeByIds(Lists.newArrayList(ids)) ? JYXResult.success() : JYXResult.error();
    }

    /**
     * 获取所有设计状态
     */
    @GetMapping("/getStatusList")
    @ApiOperation("获取所有设计状态列表")
    public JYXResult getStatusList() {
        return JYXResult.success(DesignStatusEnum.getAllStatus());
    }

    /**
     * 更新设计状态（支持列表直接编辑）
     */
    @PostMapping("/updateStatus")
    @ApiOperation("更新设计状态")
    public JYXResult updateStatus(@RequestParam Long id, @RequestParam String status) {
        return designBaseService.updateDesignStatus(id, status) ? JYXResult.success() : JYXResult.error();
    }

    /**
     * 更新设计进度（支持列表直接编辑）
     */
    @PostMapping("/updateProgress")
    @ApiOperation("更新设计进度")
    public JYXResult updateProgress(@RequestParam Long id, @RequestParam Integer progress) {
        return designBaseService.updateDesignProgress(id, progress) ? JYXResult.success() : JYXResult.error();
    }
}
